package com.noriental.okcalls.wechat.callback.dispatch;

import com.noriental.okcalls.wechat.msg.event.InEquDataMsg;
import com.noriental.okcalls.wechat.msg.event.InEqubindEvent;
import com.noriental.okcalls.wechat.msg.in.*;
import com.noriental.okcalls.wechat.msg.in.card.*;
import com.noriental.okcalls.wechat.msg.in.event.*;
import com.noriental.okcalls.wechat.msg.in.speech_recognition.InSpeechRecognitionResults;

/***
 * *   ____  ___________  ___________           ________   ____  __.  _____ _____.___.
 * *   \   \/  /\______ \ \_   _____/           \_____  \ |    |/ _| /  _  \\__  |   |
 * *    \     /  |    |  \ |    __)     ______   /   |   \|      <  /  /_\  \/   |   |
 * *    /     \  |    `   \|     \     /_____/  /    |    \    |  \/    |    \____   |
 * *   /___/\  \/_______  /\___  /              \_______  /____|__ \____|__  / ______|
 * *    	 \_/        \/     \/                       \/        \/       \/\/
 * *
 * *   功能描述：
 * *
 * *   @DATE    2020-10-12
 * *   @AUTHOR  qiyubin
 ***/
public abstract class WxMsgDispatcher {

    /**
     * 处理接收到的文本消息
     *
     * @param inTextMsg 处理接收到的文本消息
     */
    public abstract void processInTextMsg(InTextMsg inTextMsg);

    /**
     * 处理接收到的图片消息
     *
     * @param inImageMsg 处理接收到的图片消息
     */
    public abstract void processInImageMsg(InImageMsg inImageMsg);

    /**
     * 处理接收到的语音消息
     *
     * @param inVoiceMsg 处理接收到的语音消息
     */
    public abstract void processInVoiceMsg(InVoiceMsg inVoiceMsg);

    /**
     * 处理接收到的视频消息
     *
     * @param inVideoMsg 处理接收到的视频消息
     */
    public abstract void processInVideoMsg(InVideoMsg inVideoMsg);

    /**
     * 处理接收到的小视频消息
     *
     * @param inShortVideoMsg 处理接收到的小视频消息
     */
    public abstract void processInShortVideoMsg(InShortVideoMsg inShortVideoMsg);

    /**
     * 处理接收到的地址位置消息
     *
     * @param inLocationMsg 处理接收到的地址位置消息
     */
    public abstract void processInLocationMsg(InLocationMsg inLocationMsg);

    /**
     * 处理接收到的链接消息
     *
     * @param inLinkMsg 处理接收到的链接消息
     */
    public abstract void processInLinkMsg(InLinkMsg inLinkMsg);

    /**
     * 处理接收到的多客服管理事件
     *
     * @param inCustomEvent 处理接收到的多客服管理事件
     */
    public abstract void processInCustomEvent(InCustomEvent inCustomEvent);

    /**
     * 处理接收到的关注/取消关注事件
     *
     * @param inFollowEvent 处理接收到的关注/取消关注事件
     */
    public abstract void processInFollowEvent(InFollowEvent inFollowEvent);

    /**
     * 处理接收到的扫描带参数二维码事件
     *
     * @param inQrCodeEvent 处理接收到的扫描带参数二维码事件
     */
    public abstract void processInQrCodeEvent(InQrCodeEvent inQrCodeEvent);

    /**
     * 处理接收到的上报地理位置事件
     *
     * @param inLocationEvent 处理接收到的上报地理位置事件
     */
    public abstract void processInLocationEvent(InLocationEvent inLocationEvent);

    /**
     * 处理接收到的群发任务结束时通知事件
     *
     * @param inMassEvent 处理接收到的群发任务结束时通知事件
     */
    public abstract void processInMassEvent(InMassEvent inMassEvent);

    /**
     * 处理接收到的自定义菜单事件
     *
     * @param inMenuEvent 处理接收到的自定义菜单事件
     */
    public abstract void processInMenuEvent(InMenuEvent inMenuEvent);

    /**
     * 处理接收到的语音识别结果
     *
     * @param inSpeechRecognitionResults 处理接收到的语音识别结果
     */
    public abstract void processInSpeechRecognitionResults(InSpeechRecognitionResults inSpeechRecognitionResults);

    /**
     * 处理接收到的模板消息是否送达成功通知事件
     *
     * @param inTemplateMsgEvent 处理接收到的模板消息是否送达成功通知事件
     */
    public abstract void processInTemplateMsgEvent(InTemplateMsgEvent inTemplateMsgEvent);

    /**
     * 处理微信摇一摇事件
     *
     * @param inShakearoundUserShakeEvent 处理微信摇一摇事件
     */
    public abstract void processInShakearoundUserShakeEvent(InShakearoundUserShakeEvent inShakearoundUserShakeEvent);

    /**
     * 资质认证成功 || 名称认证成功 || 年审通知 || 认证过期失效通知
     *
     * @param inVerifySuccessEvent 资质认证成功 || 名称认证成功 || 年审通知 || 认证过期失效通知
     */
    public abstract void processInVerifySuccessEvent(InVerifySuccessEvent inVerifySuccessEvent);

    /**
     * 资质认证失败 || 名称认证失败
     *
     * @param inVerifyFailEvent 资质认证失败 || 名称认证失败
     */
    public abstract void processInVerifyFailEvent(InVerifyFailEvent inVerifyFailEvent);

    /**
     * 门店在审核事件消息
     *
     * @param inPoiCheckNotifyEvent 门店在审核事件消息
     */
    public abstract void processInPoiCheckNotifyEvent(InPoiCheckNotifyEvent inPoiCheckNotifyEvent);

    /**
     * WIFI连网后下发消息 by unas at 2016-1-29
     *
     * @param inWifiEvent WIFI连网后下发消息
     */
    public abstract void processInWifiEvent(InWifiEvent inWifiEvent);

    /**
     * 1. 微信会员卡二维码扫描领取接口
     * 2. 微信会员卡激活接口
     * 3. 卡券删除事件推送
     * 4. 从卡券进入公众号会话事件推送
     *
     * @param inUserCardEvent InUserCardEvent
     */
    public abstract void processInUserCardEvent(InUserCardEvent inUserCardEvent);

    /**
     * 微信会员卡积分变更
     *
     * @param inUpdateMemberCardEvent 微信会员卡积分变更
     */
    public abstract void processInUpdateMemberCardEvent(InUpdateMemberCardEvent inUpdateMemberCardEvent);

    /**
     * 微信会员卡快速买单
     *
     * @param inUserPayFromCardEvent 微信会员卡快速买单
     */
    public abstract void processInUserPayFromCardEvent(InUserPayFromCardEvent inUserPayFromCardEvent);

    /**
     * 微信小店订单支付成功接口消息
     *
     * @param inMerChantOrderEvent 微信小店订单支付成功接口消息
     */
    public abstract void processInMerChantOrderEvent(InMerChantOrderEvent inMerChantOrderEvent);

    //

    /**
     * 没有找到对应的事件消息
     *
     * @param inNotDefinedEvent 没有对应的事件消息
     */
    public abstract void processIsNotDefinedEvent(InNotDefinedEvent inNotDefinedEvent);

    /**
     * 没有找到对应的消息
     *
     * @param inNotDefinedMsg 没有对应消息
     */
    public abstract void processIsNotDefinedMsg(InNotDefinedMsg inNotDefinedMsg);

    /**
     * 卡券转赠事件推送
     *
     * @param msg 卡券转赠事件推送
     */
    public abstract void processInUserGiftingCardEvent(InUserGiftingCardEvent msg);

    /**
     * 卡券领取事件推送
     *
     * @param msg 卡券领取事件推送
     */
    public abstract void processInUserGetCardEvent(InUserGetCardEvent msg);

    /**
     * 卡券核销事件推送
     *
     * @param msg 卡券核销事件推送
     */
    public abstract void processInUserConsumeCardEvent(InUserConsumeCardEvent msg);

    /**
     * 卡券库存报警事件
     *
     * @param msg 卡券库存报警事件
     */
    public abstract void processInCardSkuRemindEvent(InCardSkuRemindEvent msg);

    /**
     * 券点流水详情事件
     *
     * @param msg 券点流水详情事件
     */
    public abstract void processInCardPayOrderEvent(InCardPayOrderEvent msg);

    /**
     * 审核事件推送
     *
     * @param msg 审核事件推送
     */
    public abstract void processInCardPassCheckEvent(InCardPassCheckEvent msg);

    /**
     * 处理微信硬件绑定和解绑事件
     *
     * @param msg 处理微信硬件绑定和解绑事件
     */
    public abstract void processInEqubindEvent(InEqubindEvent msg);

    /**
     * 处理微信硬件发来数据
     *
     * @param msg 处理微信硬件发来数据
     */
    public abstract void processInEquDataMsg(InEquDataMsg msg);

}
